﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ModuloAdministrativo
{
    public partial class PratoForm : Form
    {
        WSsiar.ServicosSIARSoapClient ws = new WSsiar.ServicosSIARSoapClient();
        List<WSsiar.Prato_Insumo> prato_insumos = new List<WSsiar.Prato_Insumo>();
        List<WSsiar.Prato_Insumo> pratoInsumoPequena = new List<WSsiar.Prato_Insumo>();
        List<WSsiar.Prato_Insumo> pratoInsumoMedia = new List<WSsiar.Prato_Insumo>();
        List<WSsiar.Prato_Insumo> pratoInsumoGrande = new List<WSsiar.Prato_Insumo>();
        List<WSsiar.Prato_Insumo> pratoInsumoGigante = new List<WSsiar.Prato_Insumo>();

        public PratoForm()
        {
            InitializeComponent();
        }

        private void PratoForm_Load(object sender, EventArgs e)
        {          
            this.atualizarListView();
            this.atualizarComboBox();
        }
        private void atualizarListView() 
        {
            WSsiar.PratoBean[] listaDePratos = ws.PratoListar();
            pratoLV.Items.Clear();
            if(listaDePratos.Length != 0){
                for (int i = 0; i < listaDePratos.Length; i++)
                {
                    ListViewItem item = new ListViewItem(listaDePratos[i].Nome);
                    item.SubItems.Add(listaDePratos[i].Descricao.ToString());
                    item.SubItems.Add(listaDePratos[i].Preco.ToString());
                    item.SubItems.Add(listaDePratos[i].Id.ToString());
                    item.SubItems.Add(listaDePratos[i].Tipo);
                    item.SubItems.Add(listaDePratos[i].Tamanho);
                    pratoLV.Items.Add(item);
                }
            }
        }
        private void atualizarComboBox()
        {
            insumosCB.Items.Clear();
            insumosCB.Items.AddRange(ws.InsumoListar());
            insumosCB.DisplayMember = "Nome";
            insumosCB.ValueMember = "ID";

            tipoCB.Items.Clear();
            tipoCB.Items.Add("Pizza");
            tipoCB.Items.Add("Massa");
        }

        private void add_Click(object sender, EventArgs e)
        {
            if (tipoCB.SelectedItem.ToString().Equals("Pizza"))
            {
                PratoInsumoForm form = new PratoInsumoForm();
                if (form.ShowDialog() == DialogResult.OK)
                {
                    string qPequena = form.getPequena();
                    if (!qPequena.Equals(""))
                    {
                        WSsiar.InsumoBean insumoSelecionado =
                            (WSsiar.InsumoBean)insumosCB.SelectedItem;
                        WSsiar.InsumoBean insumo =
                            ws.InsumoBuscar(insumoSelecionado.ID);
                        WSsiar.Prato_Insumo pratoInsumo = new WSsiar.Prato_Insumo();
                        pratoInsumo.ID_Insumo = insumo.ID;
                        pratoInsumo.Quantidade = int.Parse(qPequena);
                        pratoInsumoPequena.Add(pratoInsumo);

                        ListViewItem item = new ListViewItem(insumo.Nome);
                        item.SubItems.Add(qPequena);
                        insumosLV.Items.Add(item);
                    }
                    string qMedia = form.getMedia();
                    if (!qMedia.Equals(""))
                    {
                        WSsiar.InsumoBean insumoSelecionado =
                            (WSsiar.InsumoBean)insumosCB.SelectedItem;
                        WSsiar.InsumoBean insumo =
                            ws.InsumoBuscar(insumoSelecionado.ID);
                        WSsiar.Prato_Insumo pratoInsumo = new WSsiar.Prato_Insumo();
                        pratoInsumo.ID_Insumo = insumo.ID;
                        pratoInsumo.Quantidade = int.Parse(qMedia);
                        pratoInsumoMedia.Add(pratoInsumo);

                        ListViewItem item = new ListViewItem(insumo.Nome);
                        item.SubItems.Add(qMedia);
                        insumosLV.Items.Add(item);
                    }
                    string qGrande = form.getGrande();
                    if (!qGrande.Equals(""))
                    {
                        WSsiar.InsumoBean insumoSelecionado =
                            (WSsiar.InsumoBean)insumosCB.SelectedItem;
                        WSsiar.InsumoBean insumo =
                            ws.InsumoBuscar(insumoSelecionado.ID);
                        WSsiar.Prato_Insumo pratoInsumo = new WSsiar.Prato_Insumo();
                        pratoInsumo.ID_Insumo = insumo.ID;
                        pratoInsumo.Quantidade = int.Parse(qGrande);
                        pratoInsumoGrande.Add(pratoInsumo);

                        ListViewItem item = new ListViewItem(insumo.Nome);
                        item.SubItems.Add(qGrande);
                        insumosLV.Items.Add(item);
                    }
                    string qGigante = form.getGigante();
                    if (!qGigante.Equals(""))
                    {
                        WSsiar.InsumoBean insumoSelecionado =
                            (WSsiar.InsumoBean)insumosCB.SelectedItem;
                        WSsiar.InsumoBean insumo =
                            ws.InsumoBuscar(insumoSelecionado.ID);
                        WSsiar.Prato_Insumo pratoInsumo = new WSsiar.Prato_Insumo();
                        pratoInsumo.ID_Insumo = insumo.ID;
                        pratoInsumo.Quantidade = int.Parse(qGigante);
                        pratoInsumoGigante.Add(pratoInsumo);

                        ListViewItem item = new ListViewItem(insumo.Nome);
                        item.SubItems.Add(qGigante);
                        insumosLV.Items.Add(item);
                    }
                }
            }
            else if (tipoCB.SelectedItem.ToString().Equals("Massa"))
            {
                WSsiar.InsumoBean insumoSelecionado =
                        (WSsiar.InsumoBean)insumosCB.SelectedItem;
                WSsiar.InsumoBean insumo =
                    ws.InsumoBuscar(insumoSelecionado.ID);
                WSsiar.Prato_Insumo pratoInsumo = new WSsiar.Prato_Insumo();
                pratoInsumo.ID_Insumo = insumo.ID;
                pratoInsumo.Quantidade = int.Parse(quantidadeTB.Text);
                prato_insumos.Add(pratoInsumo);

                ListViewItem item = new ListViewItem(insumo.Nome);
                item.SubItems.Add(quantidadeTB.Text);
                insumosLV.Items.Add(item);
            }

            //atualizarComboBox();
            quantidadeTB.Text = "";
            //WSsiar.InsumoBean insumoSelecionado = (WSsiar.InsumoBean)insumosCB.SelectedItem;
            //WSsiar.InsumoBean insumo = ws.InsumoBuscar(insumoSelecionado.ID);
            //WSsiar.Prato_Insumo pinsumo = new WSsiar.Prato_Insumo();
            //pinsumo.ID_Insumo = insumo.ID;
            //pinsumo.Quantidade = int.Parse(quantidadeTB.Text);
            //prato_insumos.Add(pinsumo);
            //ListViewItem item = new ListViewItem(insumo.Nome);
            //item.SubItems.Add(quantidadeTB.Text);
            //insumosLV.Items.Add(item);
        }

        private void salvar_Click(object sender, EventArgs e)
        {
            WSsiar.Prato prato = new WSsiar.Prato();
            prato.Nome = nomeTB.Text;
            prato.Descricao = descricaoTB.Text;

            if (tipoCB.SelectedItem.ToString().Equals("Pizza"))
            {
                prato.Tipo = tipoCB.SelectedItem.ToString();
                if (pequenaTB.Text != "") 
                {
                    prato.Preco = decimal.Parse(pequenaTB.Text);
                    prato.Tamanho = "Pequena";
                    WSsiar.Prato_Insumo[] insumos =
                        new WSsiar.Prato_Insumo[pratoInsumoPequena.Count];
                    for (int i = 0; i < pratoInsumoPequena.Count; i++)
                    {
                        insumos[i] = pratoInsumoPequena.ElementAt(i);
                    }
                    ws.PratoCadastrar(prato, insumos);
                }
                if (mediaTB.Text != "")
                {
                    prato.Preco = decimal.Parse(mediaTB.Text);
                    prato.Tamanho = "Média";
                    WSsiar.Prato_Insumo[] insumos =
                        new WSsiar.Prato_Insumo[pratoInsumoMedia.Count];
                    for (int i = 0; i < pratoInsumoMedia.Count; i++)
                    {
                        insumos[i] = pratoInsumoMedia.ElementAt(i);
                    }
                    ws.PratoCadastrar(prato, insumos);
                }
                if (grandeTB.Text != "")
                {
                    prato.Preco = decimal.Parse(grandeTB.Text);
                    prato.Tamanho = "Grande";
                    WSsiar.Prato_Insumo[] insumos =
                        new WSsiar.Prato_Insumo[pratoInsumoGrande.Count];
                    for (int i = 0; i < pratoInsumoGrande.Count; i++)
                    {
                        insumos[i] = pratoInsumoGrande.ElementAt(i);
                    }
                    ws.PratoCadastrar(prato, insumos);
                }
                if (giganteTB.Text != "")
                {
                    prato.Preco = decimal.Parse(giganteTB.Text);
                    prato.Tamanho = "Gigante";
                    WSsiar.Prato_Insumo[] insumos =
                        new WSsiar.Prato_Insumo[pratoInsumoGigante.Count];
                    for (int i = 0; i < pratoInsumoGigante.Count; i++)
                    {
                        insumos[i] = pratoInsumoGigante.ElementAt(i);
                    }
                    ws.PratoCadastrar(prato, insumos);
                }
            }
            else if (tipoCB.SelectedItem.ToString().Equals("Massa"))
            {
                prato.Tipo = tipoCB.SelectedItem.ToString();
                prato.Preco = decimal.Parse(precoTB.Text);
                prato.Tamanho = "Único";
                WSsiar.Prato_Insumo[] insumos =
                        new WSsiar.Prato_Insumo[prato_insumos.Count];
                for (int i = 0; i < prato_insumos.Count; i++)
                {
                    insumos[i] = prato_insumos.ElementAt(i);
                }
                ws.PratoCadastrar(prato, insumos);
            }
            insumosLV.Items.Clear();
            prato_insumos.Clear();
            pratoInsumoGigante.Clear();
            pratoInsumoGrande.Clear();
            pratoInsumoMedia.Clear();
            pratoInsumoPequena.Clear();
            nomeTB.Text = "";
            descricaoTB.Text = "";
            precoTB.Text = "";
            quantidadeTB.Text = "";
            atualizarListView();
            atualizarComboBox();
        }

        private void pratoLV_ItemActivate(object sender, EventArgs e)
        {
            int idPrato = int.Parse(pratoLV.FocusedItem.SubItems[3].Text);
            PratoAtualizarForm form = new PratoAtualizarForm(pratoLV.FocusedItem.SubItems[0].Text,
                pratoLV.FocusedItem.SubItems[1].Text, double.Parse(pratoLV.FocusedItem.SubItems[2].Text),
                int.Parse(pratoLV.FocusedItem.SubItems[3].Text), pratoLV.FocusedItem.SubItems[4].Text, pratoLV.FocusedItem.SubItems[5].Text);
            form.ShowDialog();
            this.atualizarListView();
        }

        private void tipoCB_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tipoCB.SelectedItem.ToString().Equals("Pizza"))
            {
                precoTB.Enabled = false;
            }
            else if (tipoCB.SelectedItem.ToString().Equals("Massa") | tipoCB.SelectedItem.ToString().Equals("Sanduíche"))
            {
                pequenaTB.Enabled = false;
                mediaTB.Enabled = false;
                grandeTB.Enabled = false;
                giganteTB.Enabled = false;
            }
        }
    }
}
